﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Modulos_SEA_RegistrarGrupo : System.Web.UI.Page
{
    rnDescripcion ornDescripcion;
    enDescripcion oenDescripcion;
    List<enDescripcion> loenCargo = new List<enDescripcion>();

    enGrupo oenGrupo;
    rnGrupo ornGrupo;

    enGrupoCargo oenGrupoCargo;
    rnGrupoCargo ornGrupoCargo;

    List<enGrupoCargo> loenGrupoCargo;
    string codigo = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {
        codigo = Page.Request.QueryString.AllKeys.ToList().Count > 0 ? Page.Request.QueryString["codigo"].ToString() : string.Empty;
        if (!Page.IsPostBack)
        {
            CargarEstado();
            ListarCargo();

            if (!codigo.Equals(string.Empty))
            {
                //ObtenerFormulario();
                //CargarObjetoSeleccionado();
            }
        }
    }

    private void CargarEstado()
    {
        ornDescripcion = new rnDescripcion();
        ddlEstado.DataSource = ornDescripcion.ListarEstado();
        ddlEstado.DataTextField = "Descripcion";
        ddlEstado.DataValueField = "CodigoElemento";
        ddlEstado.DataBind();
    }

    private void ListarCargo()
    {
        oenDescripcion = new enDescripcion();
        ornDescripcion = new rnDescripcion();
        loenCargo = ornDescripcion.ListarCargo();

        chkCargo.DataSource = loenCargo;
        chkCargo.DataTextField = "Descripcion";
        chkCargo.DataValueField = "CodigoElemento";
        chkCargo.DataBind();
    }

    private void CargarCargoSeleccionado()
    {
        oenGrupoCargo = new enGrupoCargo();
        ornGrupoCargo = new rnGrupoCargo();
        
        loenGrupoCargo = ornGrupoCargo.ListarCargo(int.Parse(codigo));
        Session["CargosBD"] = loenGrupoCargo;

        foreach (ListItem item in chkCargo.Items)
        {
            foreach (enGrupoCargo itemObtenidos in loenGrupoCargo)
            {
                if (int.Parse(item.Value) == itemObtenidos.CodigoCargo)
                    item.Selected = true;
            }
        }
    }

    private void GuardarCargos(int codigo)
    {
        ornGrupoCargo = new rnGrupoCargo();
        oenGrupoCargo = new enGrupoCargo();
        loenGrupoCargo = (List<enGrupoCargo>)Session["CargosBD"] == null ? new List<enGrupoCargo>() : (List<enGrupoCargo>)Session["CargosBD"];

        oenGrupoCargo.IdGrupo = codigo;
        oenGrupoCargo.CodigoEstado = 1;
        foreach (ListItem item in chkCargo.Items)
        {
            if (item.Selected)
            {
                var newList = loenGrupoCargo.FindAll(s => s.IdGrupo == int.Parse(item.Value));

                if (newList.Count == 0)
                {
                    oenGrupo.IdGrupo = codigo;
                    oenGrupoCargo.CodigoCargo = int.Parse(item.Value);
                    oenGrupoCargo.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenGrupoCargo.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
                    oenGrupoCargo.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
                    oenGrupoCargo.udFechaCreacion = DateTime.Now;
                    ornGrupoCargo.Registrar(oenGrupoCargo);
                }
            }
            else
            {
                var newList = loenGrupoCargo.FindAll(s => s.CodigoCargo == int.Parse(item.Value));
                foreach (var itemNew in newList)
                {
                    oenGrupoCargo.IdGrupoCargo = itemNew.IdGrupoCargo;
                    oenGrupoCargo.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
                    oenGrupoCargo.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
                    oenGrupoCargo.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
                //    ornGrupoCargo.Eliminar(oenGrupoCargo);
                }
            }
        }
    }
    protected void btnSi_Click(object sender, EventArgs e)
    {
        oenGrupo = new enGrupo();
        ornGrupo = new rnGrupo();

        oenGrupo.Nombre = txtNombre.Value;
        oenGrupo.CodigoEstado = int.Parse(ddlEstado.SelectedValue);
        oenGrupo.Descripcion = txtDescripcion.Text;

        if (codigo != String.Empty)
        {
            //ACTUALIZAR FORMULARIO
            oenGrupo.IdGrupo = int.Parse(codigo);
            oenGrupo.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
            oenGrupo.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
            oenGrupo.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();

            //int idFormulario = ornGrupo.Modificar(oenGrupo);
            //if (idFormulario != 0)
            //{
            //    //GuardarObjetos(int.Parse(hdfFormulario.Value));
            //    StringBuilder sb = new StringBuilder();
            //    sb.Append(@"<script language='javascript'>");
            //    sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
            //    sb.Append(@"$('#confirmacion').css('display', 'block');");
            //    sb.Append(@"</script>");
            //    ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
            //}
            //else
            //{
            //    dvAlerta2.InnerHtml = "<p style='padding-left:40px'>El nombre del formulario ya se encuentra registrado en la base de datos.";
            //    fijo.Attributes.CssStyle.Add("height", "50px");
            //    dvAlerta2.Attributes.CssStyle.Add("display", "block");
            //}
        }
        else
        {
            //REGISTRAR FORMULARIO
            oenGrupo.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
            oenGrupo.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
            oenGrupo.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();

            TransactionScope scope = new TransactionScope();
            using (scope)
            {
                int idGrupo = ornGrupo.Registrar(oenGrupo);

                if (idGrupo != 0)
                {
                    GuardarCargos(idGrupo);
                    scope.Complete();

                    StringBuilder sb = new StringBuilder();
                    sb.Append(@"<script language='javascript'>");
                    sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
                    sb.Append(@"$('#confirmacion').css('display', 'block');");
                    sb.Append(@"</script>");
                    ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
                }
                else
                {
                    dvAlerta2.InnerHtml = "<p style='padding-left:40px'>El nombre del formulario ya se encuentra registrado en la base de datos.";
                    fijo.Attributes.CssStyle.Add("height", "50px");
                    dvAlerta2.Attributes.CssStyle.Add("display", "block");
                }
            }
        }
    }
}